import request from "@/utils/request";

const USER_BASE_URL = "/admin/user";

const UserAPI = {
  /**
   * 获取当前登录用户信息
   * @returns {Promise} 登录用户昵称、头像信息，包括角色和权限
   */
  getInfo() {
    return request({
      url: `${USER_BASE_URL}/info`,
      method: "get",
    });
  },

  /**
   * 获取用户分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 用户分页列表
   */
  getPage(queryParams) {
    return request({
      url: `${USER_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    }).then((page) => {
      // 处理分页响应，确保返回正确的数据结构
      return {
        records: page.records || page.list || [],
        total: page.total || 0,
        current: page.current || page.pageNum || 1,
        size: page.size || page.pageSize || 10,
      };
    });
  },

  /**
   * 根据ID获取用户详情
   * @param {string} userId 用户ID
   * @returns {Promise} 用户详情
   */
  getById(userId) {
    return request({
      url: `${USER_BASE_URL}/${userId}`,
      method: "get",
    });
  },

  /**
   * 添加用户
   * @param {Object} data 用户表单数据
   * @returns {Promise} 添加结果
   */
  create(data) {
    return request({
      url: `${USER_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改用户
   * @param {string} id 用户ID
   * @param {Object} data 用户表单数据
   * @returns {Promise} 修改结果
   */
  update(id, data) {
    return request({
      url: `${USER_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 删除用户
   * @param {string} id 用户ID
   * @returns {Promise} 删除结果
   */
  deleteById(id) {
    return request({
      url: `${USER_BASE_URL}/${id}`,
      method: "delete",
    });
  },

  /**
   * 更新用户状态
   * @param {string} id 用户ID
   * @param {string} status 状态
   * @returns {Promise} 更新结果
   */
  updateStatus(id, status) {
    return request({
      url: `${USER_BASE_URL}/${id}/status`,
      method: "put",
      params: { status },
    });
  },

  /**
   * 重置用户密码
   * @param {string} id 用户ID
   * @param {string} newPassword 新密码
   * @returns {Promise} 重置结果
   */
  resetPassword(id, newPassword) {
    return request({
      url: `${USER_BASE_URL}/${id}/password`,
      method: "put",
      params: { newPassword },
    });
  },

  /**
   * 获取角色列表
   * @returns {Promise} 角色列表
   */
  getRoles() {
    return request({
      url: "/admin/role/list",
      method: "get",
    });
  },

  /**
   * 获取客户列表
   * @returns {Promise} 客户列表
   */
  getCustomers() {
    return request({
      url: "/admin/customer/list",
      method: "get",
    });
  },

  /**
   * 获取用户权限
   * @param {string} userId 用户ID
   * @returns {Promise} 用户权限列表
   */
  getUserPermissions(userId) {
    return request({
      url: `${USER_BASE_URL}/${userId}/permissions`,
      method: "get",
    });
  },

  /**
   * 保存用户权限
   * @param {Object} data 权限数据 {userId, permissionIds}
   * @returns {Promise} 保存结果
   */
  saveUserPermissions(data) {
    return request({
      url: `${USER_BASE_URL}/${data.userId}/permissions`,
      method: "put",
      data: data,
    });
  },
};

export default UserAPI;
